package com.lanou3g.code0410;

//多态
public class Test02 {
    public static void main(String[] args) {
        // 父类引用 指向子类对象(包含子类中的子类)
        //  ......多态(有继承,才有多态)
        Animal animal0 = new Animal();
        Animal animal = new Cat();
        animal.setKind("mao");
        Animal animal1 = new Dog();//向上转型
        //多态(父类引用指向子类对象)解释:以动物(父类),猪,狗(子类)为类.
        //假如你要调用叫这个方法的时候(这个方法已经在子类里覆写了),本应该是父类的叫,但是由于= new Dog();
        //所以直接是你覆写的叫方法(比如狗的汪汪叫),这样既可以使用父类的方法,又可以使用子类的方法,如果没有
        //覆写父类方法,那么则是父类的方法
        Dog dog = (Dog) animal1;//向下转型
        //解释:跟上面差不多,但是这个使用的是Dog自己特有的方法,比如Dog的看门,动物就没有
        dog.lookDoor();

        Zoo zoo = new Zoo();
       zoo.feed(animal0);
        zoo.feed(animal);
       zoo.feed(animal1);
    }
}
